package com.globalwave.common.appframe
{
	import com.globalwave.common.appframe.module.AppModule;
	import com.globalwave.system.vo.User;
	
	import flash.events.Event;
	
	import mx.modules.IModuleInfo;
	import mx.modules.ModuleManager;
	
	import spark.components.BorderContainer;
	
	public class MainFormAbstract extends BorderContainer
	{
		public var user : User ;

		public var modules:Array = new Array() ;
		
		public function MainFormAbstract()
		{
		}
		
		public function getModuleByID(id:String):Array {
			return modules[id] ;
		}		
		
		public function addModule(id:String, module:AppModule):void {
			modules[id] = module ;
		}
		
		public function removeModule(id:String):void{
			modules[id] = null ;
		}
		
		private var assetModule:IModuleInfo;
		
		private function loadModule(id:String, label:String, url : String) : void {
			
			if (getModuleByID(id) != null) {
			    return ;
			}
			
			assetModule = ModuleManager.getModule(url);    
			
			if (assetModule.data == null) {
				assetModule.data = new Object() ;
			}
			
			assetModule.data.id = id ;
			assetModule.data.label = label ;
			
			assetModule.addEventListener("ready", loadModuleOnReady);
			assetModule.load();          
		}
		
		private function loadModuleOnReady(e:Event):void {
			// Get an instance of the module.

			var frameModule:AppModule = assetModule.factory.create() as AppModule ;
			
			
			//frameModuleLoader.removeAllChildren() ;
			//frameModuleLoader.addChild(frameModule) ;
			addModule(assetModule.data.id, frameModule);
			//addTab(assetModule.data.label , frameModuleLoader, frameModule) ;
		}  
		
	}
}